Push communications or push messaging systems have been used to send email, news, and other relatively small pieces of data to an end-user client without a direct request from that client. These systems are typically point-to-point infrastructures, in which a single client subscribes to a particular source and receives a message from a single originator. Existing push communications systems, though, may be plagued by overly complex architectures, and often do not scale well. For example, if a push communications system permits multiple clients to subscribe to the same source, the server must typically iteratively push information to each of these clients.
Push communications systems often provide limited, if any, security measures. This lack of security has sometimes led to problems such as forged messages, where the sender claims to be someone or something else. As a result, falsified data may be passed along as fact, and a recipient may, in response, act on sensitive or critical data and expose other systems to vulnerabilities.
To date, most push communications systems have only supported basic textual data, or have implemented complex client-side software to support arbitrary data streams. This has been a disincentive to using push communications for the delivery of voice and video information. Further, sending a large amount of textual data has typically required a large overhead, relative to the message size, in order to properly rebuild a message received in segments.
In some push communications systems, a message pushed to an end-user client is assumed to be have been properly received. Alternatively, in some other systems, a series of back-and-forth messages, which add to the system's overhead, are used to confirm delivery. In order to respond to a pushed message, a client may have to instantiate a new message to the server, which may in turn be pushed to other clients. Instead of an optimized return and receipt protocol, then, the same procedure used to receive a message is executed in reverse.
Variations of push communications have been used in some content distribution networks (CDNs) in the form of one-to-one control codes that instruct the client where to pick up data for a requested file. While this may reduce some of the overhead required in a traditional query-response or pull system, it is still not optimal. The lack of a trust model between network peers and the absence of a true central control structure to moderate and arbitrate connections may limit scalability and network availability and result in stored data redundancy. In addition, routing may be an issue when data leaves a controlled private network and enters the realm of the public Internet. Once a transmission leaves the private network, it must follow the routing paths deemed appropriate by the traversed sub-networks. To date, a method for efficiently moving messages containing voice, video, text and data communications from a source to a destination through an externally controlled path has not been demonstrated.